package com.huanf.write.smallData;

import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.junit.jupiter.api.Test;
import org.joda.time.DateTime;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author: 35238
 * 功能: 写Excel，xls格式的表格，也就是03版本的
 * 时间: 2023-12-21 21:55
 */
@Slf4j
public class Xls03Writer {

    //保存表格的位置。为了方便写的是项目路径
    String PATH = "E:\\桌面\\Java-Ready\\conf\\Excel\\";

    @Test
    //xls格式的03版本统计表
    void Xls() throws IOException {

        //----------------------------------------创建一个表格---------------------------------------------

        /**
         * 1. 创建一个工作簿。Workbook接口有三个实现类，如下
         * ① HSSFWorkbook 适用于03版本的xls表格 (只使用这个)
         * ② SXSSFWorkbook 适用于07版本的xlsx表格，比下面那个处理更快
         * ③ XSSFWorkbook 适用于07版本的xlsx表格
         */
        Workbook workbook = new HSSFWorkbook();

        /**
         * 2. 创建一个工作表，就是左下角的sheet1、sheet2、sheet3
         */
        Sheet sheet = workbook.createSheet("xls统计表");

        //--------------------------------------创建第一行并填充数据-----------------------------------------

        /**
         * 3. row1 创建表格里的行，0表示第一行
         *    cell1 创建表格里的列，0表示第一列
         *    其实就是创建出一个格子(第一行,第一列)
         */
        Row row1 = sheet.createRow(0);
        Cell cell1 = row1.createCell(0);

        /**
         * 往刚刚创建出的格子(第一行第一列，也就是第一格)写入值
         */
        cell1.setCellValue("今日新增数量");

        /**
         * 再创建一个格子并写入值
         * 创建出第二个格子(第一行,第二列)
         */
        Cell cell2 = row1.createCell(1);
        cell2.setCellValue("所属平台");

        /**
         * 再创建一个格子并写入值
         * 创建出第三个格子(第一行,第三列)
         */
        Cell cell3 = row1.createCell(2);
        cell3.setCellValue("时间");

        //--------------------------------------创建第二行并填充数据-----------------------------------------

        Row row2 = sheet.createRow(1); //第二行
        Cell cell11 = row2.createCell(0); //第二行第一列
        cell11.setCellValue("99");
        Cell cell22 = row2.createCell(1);//第二行第二列
        cell22.setCellValue("哔哩哔哩");
        Cell cell33 = row2.createCell(2);//第二行第三列
        cell33.setCellValue(new DateTime().toString("yyyy-MM-dd HH:mm:ss"));

        //--------------------------------------创建第三行并填充数据-----------------------------------------

        Row row3 = sheet.createRow(2); //第三行
        Cell cell111 = row3.createCell(0); //第三行第一列
        cell111.setCellValue("120");
        Cell cell222 = row3.createCell(1);//第三行第二列
        cell222.setCellValue("阿里巴巴");
        Cell cell333 = row3.createCell(2);//第三行第三列
        cell333.setCellValue(new DateTime().toString("yyyy-MM-dd HH:mm:ss"));

        //-----------------------------------------生成一张表----------------------------------------------

        /**
         * 由于是03版本实现类(HSSFWorkbook)创建出来的表，所以文件名尾缀必须是xls
         */
        FileOutputStream xxfileOutputStream = new FileOutputStream(PATH + "xls格式的03版本统计表.xls");
        workbook.write(xxfileOutputStream);
        xxfileOutputStream.close();
        log.info("xls格式的03版本统计表 生成完毕");
    }
}
